import java.util.ArrayList;
import java.util.Scanner;

public class RentServiceImpl implements RentService{
    //搁哪都能输
    static Scanner scanner=new Scanner(System.in);

    @Override
    public void rentFlower() {
        //死循环输不对别出来
        while (true){
            System.out.println("请选择您要租车的类别：");
            System.out.println("当前有汽车类别："+Test.allVehicle.keySet());
            //租车类别
            String category=scanner.next();
            //看看有没有
            if (Test.allVehicle.containsKey(category)){
                //死循环输不对别出来
                while (true){
                    System.out.println(category+"类型汽车有如下品牌,请选择："+Test.allVehicle.get(category).keySet());
                    //汽车品牌
                    String brandSel=scanner.next();
                    //看看有没有
                    if (Test.allVehicle.get(category).containsKey(brandSel)){
                        //拿到该品牌的所有车
                        ArrayList<Vehicle> cars = Test.allVehicle.get(category).get(brandSel);
                        //看看有没有车
                        if (cars.isEmpty()){
                            System.out.println("不好意思，该品牌的汽车已经租赁完！！");
                            return;
                        }
                        //死循环输不对别出来
                        while (true){
                            //打印品牌车辆的所有信息
                            System.out.println(brandSel+"品牌有如下汽车：");
                            for (int i = 0; i < cars.size(); i++) {
                                System.out.println("["+i+"]"+cars.get(i));
                            }
                            System.out.println("请输入要租借的车辆序号：");
                            //要租的车的序号
                            int id=scanner.nextInt();
                            //判断字符合法性
                            if (id>=0&&id<cars.size()){
                                //打印要租的信息
                                System.out.println("您要租借的汽车信息如下：");
                                Vehicle vehicle = cars.get(id);
                                System.out.println(vehicle);
                                System.out.println("请输入您要租借的天数：");
                                //租的天数
                                int day=scanner.nextInt();
                                //调用方法算出租金多少
                                double rent = vehicle.rentCalculation(day);
                                //输出租车信息
                                System.out.println("尊敬的顾客，您此次租借的汽车是"+vehicle.getBrand()+"，车牌号为"+vehicle.getPlate_number()+"，租借的时间为"+day+"天，租金为"+rent+"元。祝用车愉快，一路平安！！");
                                //将车辆移入还车列表
                                Test.rentVehicle.add(vehicle);
                                //从总车里删除
                                Test.allVehicle.get(category).get(brandSel).remove(id);
                                //走人
                                return;
                            }else {
                                System.out.println("不好意思，您的输入有误！请重新输入序号！");
                            }
                        }
                    }else {
                        System.out.println("当前品牌不存在，请输入已存在的品牌！！");
                    }
                }

            }else {
                //没有这类给爷死
                System.out.println("当前类别不存在，请输入已有类别！！");
            }
        }


    }

    @Override
    public void returnFlower() {
        //看看租车了吗
        if (Test.rentVehicle.isEmpty()){
            System.out.println("您没有租借的车辆！");
            //没有直接走
            return;
        }
        //死循环输不对别出来
        while (true){
            System.out.println("您租借的车辆如下：");
            //打印租车信息
            for (int i = 0; i < Test.rentVehicle.size(); i++) {
                System.out.println("["+i+"]"+Test.rentVehicle.get(i));
            }
            System.out.println("请输入您要归还的车的序号：");
            //还车序号
            int id=scanner.nextInt();
            //判断合法性
            if (id>=0&&id<Test.rentVehicle.size()){
                //看看是轿车还是客车
                if (Test.rentVehicle.get(id) instanceof Car){
                    //通过还的车的信息找到对应的品牌的车辆集合放进去
                    Test.allVehicle.get("轿车").get(Test.rentVehicle.get(id).getBrand()).add(Test.rentVehicle.get(id));
                }else if (Test.rentVehicle.get(id) instanceof Bus){
                    Test.allVehicle.get("客车").get(Test.rentVehicle.get(id).getBrand()).add(Test.rentVehicle.get(id));
                }
                //从租车列表里删除
                Test.rentVehicle.remove(id);
                System.out.println("恭喜，还车成功！欢迎下次租借！！");
                return;
            }else {
                System.out.println("序号非法，请重新输入！！");
            }
        }

    }
}
